768B - Code For 1 - CodeForces Solution


constructive algorithms dfs and similar divide and conquer *1600

Please click on ads to support us..

Python Code:

n, l, r= [int(item) for item in input().split()]

def _enumerate(n):
    if n <= 1:
        return 1
    else:
        return _enumerate(n//2)*2 + 1

def _list(n):
    if n<=1:
        return n
    else:
        return 2 * _list(n//2) + n%2

def solve(p, n, temp, prev):
    if p == 0:
        return 0
    elif p == temp:
        return _list(n)
    elif p==temp//2 + 1:
        return _list(n//2) + n%2
    elif p>temp:
        return _list(n) + prev%2 + solve(p - temp - 1, n//2, temp//2, n)
    else:
        return solve(p, n//2, temp//2, n)

def help_sam(l, r, n):
    lower = solve(l - 1, n, _enumerate(n), 0)
    higher = solve(r, n, _enumerate(n), 0)

    return higher - lower

output  = help_sam(l, r, n)

print(output)


Comments

Submit
0 Comments
More Questions

706B - Interesting drink
1265A - Beautiful String
214A - System of Equations
287A - IQ Test
1108A - Two distinct points
1064A - Make a triangle
1245C - Constanze's Machine
1005A - Tanya and Stairways
1663F - In Every Generation
1108B - Divisors of Two Integers
1175A - From Hero to Zero
1141A - Game 23
1401B - Ternary Sequence
598A - Tricky Sum
519A - A and B and Chess
725B - Food on the Plane
154B - Colliders
127B - Canvas Frames
107B - Basketball Team
245A - System Administrator
698A - Vacations
1216B - Shooting
368B - Sereja and Suffixes
1665C - Tree Infection
1665D - GCD Guess
29A - Spit Problem
1097B - Petr and a Combination Lock
92A - Chips
1665B - Array Cloning Technique
1665A - GCD vs LCM